home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Beta / Quicktime 2.0 Beta.iso / Programming Stuff / Interfaces / Universal Interfaces / Menus.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-30  |  11.7 KB  |  355 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        Menus.h
  3.  
  4.     Copyright:    © 1984-1993 by Apple Computer, Inc., all rights reserved.
  5.  
  6.     WARNING
  7.     This file was auto generated by the interfacer tool. Modifications
  8.     must be made to the master file.
  9.  
  10. */
  11.  
  12. #ifndef __MENUS__
  13. #define __MENUS__
  14.  
  15. #ifndef __QUICKDRAW__
  16. #include <Quickdraw.h>
  17. /*    #include <Types.h>                                            */
  18. /*        #include <ConditionalMacros.h>                            */
  19. /*        #include <MixedMode.h>                                    */
  20. /*            #include <Traps.h>                                    */
  21. /*    #include <QuickdrawText.h>                                    */
  22. /*        #include <IntlResources.h>                                */
  23. #endif
  24.  
  25. #define noMark '\0'
  26.  
  27. enum  {
  28. /* menu defProc messages */
  29.     mDrawMsg                    = 0,
  30.     mChooseMsg                    = 1,
  31.     mSizeMsg                    = 2,
  32.     mDrawItemMsg                = 4,
  33.     mCalcItemMsg                = 5,
  34.     textMenuProc                = 0,
  35.     hMenuCmd                    = 27,                            /*itemCmd == 0x001B ==> hierarchical menu*/
  36.     hierMenu                    = -1,                            /*a hierarchical menu - for InsertMenu call*/
  37.     mPopUpMsg                    = 3,                            /*menu defProc messages - place yourself*/
  38.     mctAllItems                    = -98,                            /*search for all Items for the given ID*/
  39.     mctLastIDIndic                = -99                            /*last color table entry has this in ID field*/
  40. };
  41.  
  42. typedef struct MenuInfo MenuInfo, *MenuPtr, **MenuHandle;
  43.  
  44. typedef pascal void (*MenuDefProcPtr)(short message, MenuHandle theMenu, Rect *menuRect, Point hitPt, short *whichItem);
  45.  
  46. enum {
  47.     uppMenuDefProcInfo = kPascalStackBased
  48.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  49.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(MenuHandle)))
  50.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*)))
  51.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point)))
  52.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(short*)))
  53. };
  54.  
  55. #if USESROUTINEDESCRIPTORS
  56. typedef UniversalProcPtr MenuDefUPP;
  57.  
  58. #define CallMenuDefProc(userRoutine, message, theMenu, menuRect, hitPt, whichItem)        \
  59.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMenuDefProcInfo, (message), (theMenu), (menuRect), (hitPt), (whichItem))
  60. #define NewMenuDefProc(userRoutine)        \
  61.         (MenuDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMenuDefProcInfo, GetCurrentISA())
  62. #else
  63. typedef MenuDefProcPtr MenuDefUPP;
  64.  
  65. #define CallMenuDefProc(userRoutine, message, theMenu, menuRect, hitPt, whichItem)        \
  66.         (*(userRoutine))((message), (theMenu), (menuRect), (hitPt), (whichItem))
  67. #define NewMenuDefProc(userRoutine)        \
  68.         (MenuDefUPP)(userRoutine)
  69. #endif
  70.  
  71. typedef pascal long (*MenuBarDefProcPtr)(short selector, short message, short parameter1, long parameter2);
  72.  
  73. enum {
  74.     uppMenuBarDefProcInfo = kPascalStackBased
  75.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  76.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  77.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  78.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  79.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  80. };
  81.  
  82. #if USESROUTINEDESCRIPTORS
  83. typedef UniversalProcPtr MenuBarDefUPP;
  84.  
  85. #define CallMenuBarDefProc(userRoutine, selector, message, parameter1, parameter2)        \
  86.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMenuBarDefProcInfo, (selector), (message), (parameter1), (parameter2))
  87. #define NewMenuBarDefProc(userRoutine)        \
  88.         (MenuBarDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMenuBarDefProcInfo, GetCurrentISA())
  89. #else
  90. typedef MenuBarDefProcPtr MenuBarDefUPP;
  91.  
  92. #define CallMenuBarDefProc(userRoutine, selector, message, parameter1, parameter2)        \
  93.         (*(userRoutine))((selector), (message), (parameter1), (parameter2))
  94. #define NewMenuBarDefProc(userRoutine)        \
  95.         (MenuBarDefUPP)(userRoutine)
  96. #endif
  97.  
  98.  
  99. /*
  100.     typedef pascal short (*MBarHookProcPtr)(Rect* menuRect);
  101.     
  102.         In:
  103.             =>    menuRect        Pascal Stack
  104.         
  105.         Out:
  106.             =>    result            D0.W
  107. */
  108.  
  109. enum  {
  110.     uppMBarHookProcInfo            = SPECIAL_CASE_PROCINFO(kSpecialCaseMBarHook)
  111. };
  112.  
  113. #if USESROUTINEDESCRIPTORS
  114. typedef pascal short (*MBarHookProcPtr)(Rect *menuRect);
  115.  
  116. typedef UniversalProcPtr MBarHookUPP;
  117.  
  118. #define CallMBarHookProc(userRoutine, menuRect)  \
  119.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppMBarHookProcInfo, menuRect)
  120.  
  121. #define NewMBarHookProc(userRoutine)  \
  122.     (MBarHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMBarHookProcInfo, GetCurrentISA())
  123.  
  124. #else
  125. typedef ProcPtr MBarHookUPP;
  126.  
  127. #define NewMBarHookProc(userRoutine)  \
  128.     (MBarHookUPP)(userRoutine)
  129.  
  130. #endif
  131.  
  132. typedef pascal void (*MenuHookProcPtr)();
  133.  
  134. enum {
  135.     uppMenuHookProcInfo = kPascalStackBased
  136. };
  137.  
  138. #if USESROUTINEDESCRIPTORS
  139. typedef UniversalProcPtr MenuHookUPP;
  140.  
  141. #define CallMenuHookProc(userRoutine)        \
  142.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMenuHookProcInfo)
  143. #define NewMenuHookProc(userRoutine)        \
  144.         (MenuHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMenuHookProcInfo, GetCurrentISA())
  145. #else
  146. typedef MenuHookProcPtr MenuHookUPP;
  147.  
  148. #define CallMenuHookProc(userRoutine)        \
  149.         (*(userRoutine))()
  150. #define NewMenuHookProc(userRoutine)        \
  151.         (MenuHookUPP)(userRoutine)
  152. #endif
  153.  
  154. #if defined(powerc) || defined (__powerc)
  155. #pragma options align=mac68k
  156. #endif
  157. struct MenuInfo {
  158.     short                        menuID;
  159.     short                        menuWidth;
  160.     short                        menuHeight;
  161.     Handle                        menuProc;
  162.     long                        enableFlags;
  163.     Str255                        menuData;
  164. };
  165. #if defined(powerc) || defined(__powerc)
  166. #pragma options align=reset
  167. #endif
  168.  
  169. #if defined(powerc) || defined (__powerc)
  170. #pragma options align=mac68k
  171. #endif
  172. struct MCEntry {
  173.     short                        mctID;                            /*menu ID.  ID = 0 is the menu bar*/
  174.     short                        mctItem;                        /*menu Item. Item = 0 is a title*/
  175.     RGBColor                    mctRGB1;                        /*usage depends on ID and Item*/
  176.     RGBColor                    mctRGB2;                        /*usage depends on ID and Item*/
  177.     RGBColor                    mctRGB3;                        /*usage depends on ID and Item*/
  178.     RGBColor                    mctRGB4;                        /*usage depends on ID and Item*/
  179.     short                        mctReserved;                    /*reserved for internal use*/
  180. };
  181. #if defined(powerc) || defined(__powerc)
  182. #pragma options align=reset
  183. #endif
  184.  
  185. typedef struct MCEntry MCEntry;
  186.  
  187. typedef MCEntry *MCEntryPtr;
  188.  
  189. typedef MCEntry MCTable[1], *MCTablePtr, **MCTableHandle;
  190.  
  191. #if defined(powerc) || defined (__powerc)
  192. #pragma options align=mac68k
  193. #endif
  194. struct MenuCRsrc {
  195.     short                        numEntries;                        /*number of entries*/
  196.     MCTable                        mcEntryRecs;                    /*ARRAY [1..numEntries] of MCEntry*/
  197. };
  198. #if defined(powerc) || defined(__powerc)
  199. #pragma options align=reset
  200. #endif
  201.  
  202. typedef struct MenuCRsrc MenuCRsrc;
  203.  
  204. typedef MenuCRsrc *MenuCRsrcPtr, **MenuCRsrcHandle;
  205.  
  206. #ifdef __cplusplus
  207. extern "C" {
  208. #endif
  209.  
  210. #if USESCODEFRAGMENTS
  211. extern pascal short GetMBarHeight(void);
  212. #else
  213. #define GetMBarHeight() (* (short*) 0x0BAA)
  214.  
  215. #endif
  216.  
  217. extern pascal void InitMenus(void)
  218.  ONEWORDINLINE(0xA930);
  219. extern pascal MenuHandle NewMenu(short menuID, const Str255 menuTitle)
  220.  ONEWORDINLINE(0xA931);
  221. extern pascal MenuHandle GetMenu(short resourceID)
  222.  ONEWORDINLINE(0xA9BF);
  223. extern pascal void DisposeMenu(MenuHandle theMenu)
  224.  ONEWORDINLINE(0xA932);
  225. extern pascal void AppendMenu(MenuHandle menu, ConstStr255Param data)
  226.  ONEWORDINLINE(0xA933);
  227. extern pascal void AppendResMenu(MenuHandle theMenu, ResType theType)
  228.  ONEWORDINLINE(0xA94D);
  229. extern pascal void InsertResMenu(MenuHandle theMenu, ResType theType, short afterItem)
  230.  ONEWORDINLINE(0xA951);
  231. extern pascal void InsertMenu(MenuHandle theMenu, short beforeID)
  232.  ONEWORDINLINE(0xA935);
  233. extern pascal void DrawMenuBar(void)
  234.  ONEWORDINLINE(0xA937);
  235. extern pascal void InvalMenuBar(void)
  236.  ONEWORDINLINE(0xA81D);
  237. extern pascal void DeleteMenu(short menuID)
  238.  ONEWORDINLINE(0xA936);
  239. extern pascal void ClearMenuBar(void)
  240.  ONEWORDINLINE(0xA934);
  241. extern pascal Handle GetNewMBar(short menuBarID)
  242.  ONEWORDINLINE(0xA9C0);
  243. extern pascal Handle GetMenuBar(void)
  244.  ONEWORDINLINE(0xA93B);
  245. extern pascal void SetMenuBar(Handle menuList)
  246.  ONEWORDINLINE(0xA93C);
  247. extern pascal void InsertMenuItem(MenuHandle theMenu, ConstStr255Param itemString, short afterItem)
  248.  ONEWORDINLINE(0xA826);
  249. extern pascal void DeleteMenuItem(MenuHandle theMenu, short item)
  250.  ONEWORDINLINE(0xA952);
  251. extern pascal long MenuKey(short ch)
  252.  ONEWORDINLINE(0xA93E);
  253. extern pascal void HiliteMenu(short menuID)
  254.  ONEWORDINLINE(0xA938);
  255. extern pascal void SetMenuItemText(MenuHandle theMenu, short item, ConstStr255Param itemString)
  256.  ONEWORDINLINE(0xA947);
  257. extern pascal void GetMenuItemText(MenuHandle theMenu, short item, Str255 itemString)
  258.  ONEWORDINLINE(0xA946);
  259. extern pascal void DisableItem(MenuHandle theMenu, short item)
  260.  ONEWORDINLINE(0xA93A);
  261. extern pascal void EnableItem(MenuHandle theMenu, short item)
  262.  ONEWORDINLINE(0xA939);
  263. extern pascal void CheckItem(MenuHandle theMenu, short item, Boolean checked)
  264.  ONEWORDINLINE(0xA945);
  265. extern pascal void SetItemMark(MenuHandle theMenu, short item, short markChar)
  266.  ONEWORDINLINE(0xA944);
  267. extern pascal void GetItemMark(MenuHandle theMenu, short item, short *markChar)
  268.  ONEWORDINLINE(0xA943);
  269. extern pascal void SetItemIcon(MenuHandle theMenu, short item, short iconIndex)
  270.  ONEWORDINLINE(0xA940);
  271. extern pascal void GetItemIcon(MenuHandle theMenu, short item, short *iconIndex)
  272.  ONEWORDINLINE(0xA93F);
  273. extern pascal void SetItemStyle(MenuHandle theMenu, short item, short chStyle)
  274.  ONEWORDINLINE(0xA942);
  275. extern pascal void GetItemStyle(MenuHandle theMenu, short item, Style *chStyle);
  276. extern pascal void CalcMenuSize(MenuHandle theMenu)
  277.  ONEWORDINLINE(0xA948);
  278. extern pascal short CountMItems(MenuHandle theMenu)
  279.  ONEWORDINLINE(0xA950);
  280. extern pascal MenuHandle GetMenuHandle(short menuID)
  281.  ONEWORDINLINE(0xA949);
  282. extern pascal void FlashMenuBar(short menuID)
  283.  ONEWORDINLINE(0xA94C);
  284. extern pascal void SetMenuFlash(short count)
  285.  ONEWORDINLINE(0xA94A);
  286. extern pascal long MenuSelect(Point startPt)
  287.  ONEWORDINLINE(0xA93D);
  288. extern pascal void InitProcMenu(short resID)
  289.  ONEWORDINLINE(0xA808);
  290. extern pascal void GetItemCmd(MenuHandle theMenu, short item, short *cmdChar)
  291.  ONEWORDINLINE(0xA84E);
  292. extern pascal void SetItemCmd(MenuHandle theMenu, short item, short cmdChar)
  293.  ONEWORDINLINE(0xA84F);
  294. extern pascal long PopUpMenuSelect(MenuHandle menu, short top, short left, short popUpItem)
  295.  ONEWORDINLINE(0xA80B);
  296. extern pascal long MenuChoice(void)
  297.  ONEWORDINLINE(0xAA66);
  298. extern pascal void DeleteMCEntries(short menuID, short menuItem)
  299.  ONEWORDINLINE(0xAA60);
  300. extern pascal MCTableHandle GetMCInfo(void)
  301.  ONEWORDINLINE(0xAA61);
  302. extern pascal void SetMCInfo(MCTableHandle menuCTbl)
  303.  ONEWORDINLINE(0xAA62);
  304. extern pascal void DisposeMCInfo(MCTableHandle menuCTbl)
  305.  ONEWORDINLINE(0xAA63);
  306. extern pascal MCEntryPtr GetMCEntry(short menuID, short menuItem)
  307.  ONEWORDINLINE(0xAA64);
  308. extern pascal void SetMCEntries(short numEntries, MCTablePtr menuCEntries)
  309.  ONEWORDINLINE(0xAA65);
  310. extern pascal void InsertFontResMenu(MenuHandle theMenu, short afterItem, short scriptFilter)
  311.  THREEWORDINLINE(0x303C, 0x0400, 0xA825);
  312. extern pascal void InsertIntlResMenu(MenuHandle theMenu, ResType theType, short afterItem, short scriptFilter)
  313.  THREEWORDINLINE(0x303C, 0x0601, 0xA825);
  314. extern MenuHandle newmenu(short menuID, char *menuTitle);
  315. extern void appendmenu(MenuHandle menu, char *data);
  316. extern void insertmenuitem(MenuHandle theMenu, char *itemString, short afterItem);
  317. extern long menuselect(Point *startPt);
  318. extern void setmenuitemtext(MenuHandle menu, short item, char *itemString);
  319. extern void getmenuitemtext(MenuHandle menu, short item, char *itemString);
  320. #if OLDROUTINENAMES
  321. #define AddResMenu(theMenu, theType) AppendResMenu(theMenu, theType)
  322.  
  323. #define InsMenuItem(theMenu, itemString, afterItem)  \
  324.     InsertMenuItem(theMenu, itemString, afterItem)
  325.  
  326. #define DelMenuItem(theMenu, item) DeleteMenuItem(theMenu, item)
  327.  
  328. #define SetItem(theMenu, item, itemString) SetMenuItemText(theMenu, item, itemString)
  329.  
  330. #define GetItem(theMenu, item, itemString) GetMenuItemText(theMenu, item, itemString)
  331.  
  332. #define GetMHandle(menuID) GetMenuHandle(menuID)
  333.  
  334. #define DelMCEntries(menuID, menuItem) DeleteMCEntries(menuID, menuItem)
  335.  
  336. #define DispMCInfo(menuCTbl) DisposeMCInfo(menuCTbl)
  337.  
  338. #define addresmenu(menu, data) appendresmenu(menu, data)
  339.  
  340. #define getitem(menu, item, itemString) getmenuitemtext(menu, item, itemString)
  341.  
  342. #define setitem(menu, item, itemString) setmenuitemtext(menu, item, itemString)
  343.  
  344. #define insmenuitem(theMenu, itemString, afterItem)  \
  345.     insertmenuitem(theMenu, itemString, afterItem)
  346.  
  347. #endif
  348.  
  349. #ifdef __cplusplus
  350. }
  351. #endif
  352.  
  353. #endif
  354.  
  355.